;
; Author: Javier Quevedo Fernandez
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

;; -------------------------------------------------------------
;; -------------------------------------------------------------
;;					INTELIGENCIA ARTIFICIAL
;; -------------------------------------------------------------
;; -------------------------------------------------------------


org	0A00H

	; 

MODIFICAR_ESTADO:
	JNB	MEDICION_ESTADO,MODIFICAR_ESTADO_DELANTE

MODIFICAR_ESTADO_DERECHA:
	MOV	A,DIST_DCHA_H
	JZ	MODIFICAR_ESTADO_DERECHA_ST0
	LCALL	EJECUTAR_GIRAR_DERECHA
	JMP	MODIFICAR_ESTADO_EXIT

MODIFICAR_ESTADO_DERECHA_ST0:	
	MOV	A,#DIST_DCHA_L
	JZ	MODIFICAR_ESTADO_DERECHA_ST3
	CLR	C	
	CLR	CY
	CLR	OV
	SUBB	A,#SENSOR_MAXIMA_DIST_DERECHA
	JC	MODIFICAR_ESTADO_DERECHA_ST1	
	LCALL	EJECUTAR_GIRAR_DERECHA
	JMP	MODIFICAR_ESTADO_EXIT
	
MODIFICAR_ESTADO_DERECHA_ST1:	
	MOV	A,DIST_DCHA_L
	CLR	C
	CLR	CY
	CLR	OV
	SUBB	A,#SENSOR_MINIMA_DIST_DERECHA
	JC	MODIFICAR_ESTADO_DERECHA_ST2
	LCALL	EJECUTAR_AVANZAR
	JMP	MODIFICAR_ESTADO_EXIT
MODIFICAR_ESTADO_DERECHA_ST2:
	LCALL	EJECUTAR_GIRAR_IZQUIERDA
	JMP	MODIFICAR_ESTADO_EXIT	

MODIFICAR_ESTADO_DERECHA_ST3:
	LCALL	EJECUTAR_GIRAR_DERECHA
	JMP	MODIFICAR_ESTADO_EXIT
	
	
MODIFICAR_ESTADO_DELANTE:
	MOV	A,DIST_DELANTE_H
	JZ	MODIFICAR_ESTADO_DELANTE_ST0
	LCALL	EJECUTAR_AVANZAR
	LJMP	MODIFICAR_ESTADO_EXIT
MODIFICAR_ESTADO_DELANTE_ST0:	
	MOV	A,DIST_DELANTE_L
	JZ	MODIFICAR_ESTADO_DELANTE_ST3
	CLR	C
	CLR	CY
	CLR	OV
	SUBB	A,#SENSOR_MINIMA_DIST_DELANTE

	JC	MODIFICAR_ESTADO_DELANTE_ST1
	LCALL	EJECUTAR_AVANZAR
	JMP	MODIFICAR_ESTADO_EXIT	
MODIFICAR_ESTADO_DELANTE_ST1:
	LCALL	EJECUTAR_GIRAR_IZQUIERDA
	JMP	MODIFICAR_ESTADO_EXIT

MODIFICAR_ESTADO_DELANTE_ST3:
	LCALL	EJECUTAR_AVANZAR
	JMP	MODIFICAR_ESTADO_EXIT
MODIFICAR_ESTADO_EXIT:	
	RET
	


IA:

IA_LOOP:	JNB	MEDICION_PENDIENTE,IA_STAGE1
		LCALL	REALIZAR_MEDICION
		LCALL	MODIFICAR_ESTADO
		LCALL	LCD_WRITE_DISTANCE
IA_STAGE1:	
	JMP	IA_LOOP
	
